// vite.config.mts
import { defineConfig, loadEnv } from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/vite@4.5.14_@types+node@18.19.113_sass@1.89.2_terser@5.43.1/node_modules/vite/dist/node/index.js";

// build/utils.ts
import path from "node:path";
function getRootPath() {
  return path.resolve(process.cwd());
}
function getSrcPath(srcName = "src") {
  return path.resolve(getRootPath(), srcName);
}
function convertEnv(envOptions) {
  const result = {};
  if (!envOptions)
    return result;
  for (const envKey in envOptions) {
    let envVal = envOptions[envKey];
    if (["true", "false"].includes(envVal))
      envVal = envVal === "true";
    if (["VITE_PORT"].includes(envKey))
      envVal = +envVal;
    result[envKey] = envVal;
  }
  return result;
}

// build/config/define.ts
import dayjs from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js";
var _BUILD_TIME_ = JSON.stringify(dayjs().format("YYYY-MM-DD HH:mm:ss"));
var viteDefine = {
  _BUILD_TIME_
};

// settings/proxy-config.ts
var proxyConfigMappings = {
  dev: {
    prefix: "/api",
    target: "http://127.0.0.1:8000"
  },
  test: {
    prefix: "/api",
    target: "http://localhost:8080"
  },
  prod: {
    prefix: "/api",
    target: "http://localhost:8080"
  }
};
function getProxyConfig(envType = "dev") {
  return proxyConfigMappings[envType];
}

// build/config/proxy.ts
function createViteProxy(isUseProxy = true, proxyType) {
  if (!isUseProxy)
    return void 0;
  const proxyConfig = getProxyConfig(proxyType);
  const proxy = {
    [proxyConfig.prefix]: {
      target: proxyConfig.target,
      changeOrigin: true,
      rewrite: (path2) => path2.replace(new RegExp(`^${proxyConfig.prefix}`), "")
    }
  };
  return proxy;
}

// build/plugins/index.ts
import vue from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/@vitejs+plugin-vue@4.6.2_vi_384b395593e0f6c126e0218c29495e31/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import unocss from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/unocss@0.46.5_rollup@3.29.5_8bf097fa737ad0d7772c0deb1809ba5d/node_modules/unocss/dist/vite.mjs";
import { visualizer } from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/rollup-plugin-visualizer@5.14.0_rollup@3.29.5/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
import viteCompression from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/vite-plugin-compression@0.5_082873346c42bfc77dc5b2619518fd46/node_modules/vite-plugin-compression/dist/index.mjs";

// build/plugins/unplugin.ts
import { resolve } from "node:path";
import AutoImport from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/unplugin-auto-import@0.16.7_88364370a9342a9294bc125da68405c2/node_modules/unplugin-auto-import/dist/vite.js";
import Components from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/unplugin-vue-components@0.2_ffa5626aa637a54c9b9e31b14f92b1d1/node_modules/unplugin-vue-components/dist/vite.mjs";
import { NaiveUiResolver } from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/unplugin-vue-components@0.2_ffa5626aa637a54c9b9e31b14f92b1d1/node_modules/unplugin-vue-components/dist/resolvers.mjs";
import { FileSystemIconLoader } from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/unplugin-icons@0.16.6_@vue+compiler-sfc@3.5.17/node_modules/unplugin-icons/dist/loaders.mjs";
import IconsResolver from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/unplugin-icons@0.16.6_@vue+compiler-sfc@3.5.17/node_modules/unplugin-icons/dist/resolver.mjs";
import Icons from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/unplugin-icons@0.16.6_@vue+compiler-sfc@3.5.17/node_modules/unplugin-icons/dist/vite.mjs";
import { createSvgIconsPlugin } from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_e142e9fe813c3513f22a85d4a79c416a/node_modules/vite-plugin-svg-icons/dist/index.mjs";
var customIconPath = resolve(getSrcPath(), "assets/svg");
var unplugin_default = [
  AutoImport({
    imports: ["vue", "vue-router"],
    dts: "types/auto-imports.d.ts"
  }),
  Icons({
    compiler: "vue3",
    customCollections: {
      custom: FileSystemIconLoader(customIconPath)
    },
    scale: 1,
    defaultClass: "inline-block"
  }),
  Components({
    resolvers: [NaiveUiResolver(), IconsResolver({ customCollections: ["custom"], componentPrefix: "icon" })],
    dts: "types/components.d.ts"
  }),
  createSvgIconsPlugin({
    iconDirs: [customIconPath],
    symbolId: "icon-custom-[dir]-[name]",
    inject: "body-last",
    customDomId: "__CUSTOM_SVG_ICON__"
  })
];

// build/plugins/html.ts
import { createHtmlPlugin } from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/vite-plugin-html@3.2.2_vite_50d13f021baf8b1dc1c43b6cbfe616ea/node_modules/vite-plugin-html/dist/index.mjs";
function setupHtmlPlugin(viteEnv) {
  const { VITE_APP_TITLE } = viteEnv;
  const htmlPlugin = createHtmlPlugin({
    minify: true,
    inject: {
      data: {
        title: VITE_APP_TITLE
      }
    }
  });
  return htmlPlugin;
}

// build/plugins/mock.ts
import { viteMockServe } from "file:///D:/%E9%80%BB%E6%A0%BCAI/luoge_v2/sysmars/qs-admin-ts/node_modules/.pnpm/vite-plugin-mock@2.9.8_mock_696b6ee20f1e6b4b64ae3e1b3eda1a59/node_modules/vite-plugin-mock/dist/index.js";
function setupMockPlugin(isBuild) {
  return viteMockServe({
    mockPath: "mock/api",
    localEnabled: !isBuild,
    prodEnabled: isBuild,
    injectCode: `
      import { setupProdMockServer } from '../mock';
      setupProdMockServer();
    `
  });
}

// build/plugins/index.ts
function setupVitePlugins(viteEnv, isBuild) {
  const plugins = [vue(), ...unplugin_default, unocss(), setupHtmlPlugin(viteEnv)];
  if (viteEnv.VITE_USE_MOCK)
    plugins.push(setupMockPlugin(isBuild));
  if (viteEnv.VITE_USE_COMPRESS) {
    plugins.push(
      viteCompression({ algorithm: viteEnv.VITE_COMPRESS_TYPE || "gzip" })
    );
  }
  if (isBuild) {
    plugins.push(
      visualizer({
        open: true,
        gzipSize: true,
        brotliSize: true
      })
    );
  }
  return plugins;
}

// vite.config.mts
var vite_config_default = defineConfig((configEnv) => {
  const srcPath = getSrcPath();
  const rootPath = getRootPath();
  const isBuild = configEnv.command === "build";
  const viteEnv = convertEnv(loadEnv(configEnv.mode, process.cwd()));
  const { VITE_PORT, VITE_PUBLIC_PATH, VITE_USE_PROXY, VITE_PROXY_TYPE } = viteEnv;
  return {
    base: VITE_PUBLIC_PATH,
    resolve: {
      alias: {
        "~": rootPath,
        "@": srcPath
      }
    },
    define: viteDefine,
    plugins: setupVitePlugins(viteEnv, isBuild),
    server: {
      host: "0.0.0.0",
      port: VITE_PORT,
      open: true,
      proxy: createViteProxy(VITE_USE_PROXY, VITE_PROXY_TYPE)
    },
    build: {
      reportCompressedSize: false,
      sourcemap: false,
      chunkSizeWarningLimit: 1024,
      // chunk 大小警告的限制（单位kb）
      commonjsOptions: {
        ignoreTryCatch: false
      }
    }
  };
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcubXRzIiwgImJ1aWxkL3V0aWxzLnRzIiwgImJ1aWxkL2NvbmZpZy9kZWZpbmUudHMiLCAic2V0dGluZ3MvcHJveHktY29uZmlnLnRzIiwgImJ1aWxkL2NvbmZpZy9wcm94eS50cyIsICJidWlsZC9wbHVnaW5zL2luZGV4LnRzIiwgImJ1aWxkL3BsdWdpbnMvdW5wbHVnaW4udHMiLCAiYnVpbGQvcGx1Z2lucy9odG1sLnRzIiwgImJ1aWxkL3BsdWdpbnMvbW9jay50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXFx1OTAzQlx1NjgzQ0FJXFxcXGx1b2dlX3YyXFxcXHN5c21hcnNcXFxccXMtYWRtaW4tdHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXFx1OTAzQlx1NjgzQ0FJXFxcXGx1b2dlX3YyXFxcXHN5c21hcnNcXFxccXMtYWRtaW4tdHNcXFxcdml0ZS5jb25maWcubXRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi8lRTklODAlQkIlRTYlQTAlQkNBSS9sdW9nZV92Mi9zeXNtYXJzL3FzLWFkbWluLXRzL3ZpdGUuY29uZmlnLm10c1wiO2ltcG9ydCB0eXBlIHsgQ29uZmlnRW52IH0gZnJvbSAndml0ZSdcclxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBsb2FkRW52IH0gZnJvbSAndml0ZSdcclxuXHJcbmltcG9ydCB7IGNvbnZlcnRFbnYsIGdldFJvb3RQYXRoLCBnZXRTcmNQYXRoIH0gZnJvbSAnLi9idWlsZC91dGlscydcclxuaW1wb3J0IHsgY3JlYXRlVml0ZVByb3h5LCB2aXRlRGVmaW5lIH0gZnJvbSAnLi9idWlsZC9jb25maWcnXHJcbmltcG9ydCB7IHNldHVwVml0ZVBsdWdpbnMgfSBmcm9tICcuL2J1aWxkL3BsdWdpbnMnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoKGNvbmZpZ0VudjogQ29uZmlnRW52KSA9PiB7XHJcbiAgY29uc3Qgc3JjUGF0aCA9IGdldFNyY1BhdGgoKVxyXG4gIGNvbnN0IHJvb3RQYXRoID0gZ2V0Um9vdFBhdGgoKVxyXG4gIGNvbnN0IGlzQnVpbGQgPSBjb25maWdFbnYuY29tbWFuZCA9PT0gJ2J1aWxkJ1xyXG5cclxuICBjb25zdCB2aXRlRW52ID0gY29udmVydEVudihsb2FkRW52KGNvbmZpZ0Vudi5tb2RlLCBwcm9jZXNzLmN3ZCgpKSlcclxuXHJcbiAgY29uc3QgeyBWSVRFX1BPUlQsIFZJVEVfUFVCTElDX1BBVEgsIFZJVEVfVVNFX1BST1hZLCBWSVRFX1BST1hZX1RZUEUgfSA9IHZpdGVFbnZcclxuICByZXR1cm4ge1xyXG4gICAgYmFzZTogVklURV9QVUJMSUNfUEFUSCxcclxuICAgIHJlc29sdmU6IHtcclxuICAgICAgYWxpYXM6IHtcclxuICAgICAgICAnfic6IHJvb3RQYXRoLFxyXG4gICAgICAgICdAJzogc3JjUGF0aCxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBkZWZpbmU6IHZpdGVEZWZpbmUsXHJcbiAgICBwbHVnaW5zOiBzZXR1cFZpdGVQbHVnaW5zKHZpdGVFbnYsIGlzQnVpbGQpLFxyXG4gICAgc2VydmVyOiB7XHJcbiAgICAgIGhvc3Q6ICcwLjAuMC4wJyxcclxuICAgICAgcG9ydDogVklURV9QT1JULFxyXG4gICAgICBvcGVuOiB0cnVlLFxyXG4gICAgICBwcm94eTogY3JlYXRlVml0ZVByb3h5KFZJVEVfVVNFX1BST1hZLCBWSVRFX1BST1hZX1RZUEUgYXMgUHJveHlUeXBlKSxcclxuICAgIH0sXHJcbiAgICBidWlsZDoge1xyXG4gICAgICByZXBvcnRDb21wcmVzc2VkU2l6ZTogZmFsc2UsXHJcbiAgICAgIHNvdXJjZW1hcDogZmFsc2UsXHJcbiAgICAgIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDogMTAyNCwgLy8gY2h1bmsgXHU1OTI3XHU1QzBGXHU4QjY2XHU1NDRBXHU3Njg0XHU5NjUwXHU1MjM2XHVGRjA4XHU1MzU1XHU0RjREa2JcdUZGMDlcclxuICAgICAgY29tbW9uanNPcHRpb25zOiB7XHJcbiAgICAgICAgaWdub3JlVHJ5Q2F0Y2g6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9XHJcbn0pXHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxidWlsZFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxidWlsZFxcXFx1dGlscy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovJUU5JTgwJUJCJUU2JUEwJUJDQUkvbHVvZ2VfdjIvc3lzbWFycy9xcy1hZG1pbi10cy9idWlsZC91dGlscy50c1wiO2ltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCdcclxuXHJcbi8qKlxyXG4gKiAqIFx1OTg3OVx1NzZFRVx1NjgzOVx1OERFRlx1NUY4NFxyXG4gKiBAZGVzY3JpdGlvbiBcdTdFRDNcdTVDM0VcdTRFMERcdTVFMjYvXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFBhdGgoKSB7XHJcbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpKVxyXG59XHJcblxyXG4vKipcclxuICogKiBcdTk4NzlcdTc2RUVzcmNcdThERUZcdTVGODRcclxuICogQHBhcmFtIHNyY05hbWUgc3JjXHU3NkVFXHU1RjU1XHU1NDBEXHU3OUYwKFx1OUVEOFx1OEJBNDogXCJzcmNcIilcclxuICogQGRlc2NyaXRpb24gXHU3RUQzXHU1QzNFXHU0RTBEXHU1RTI2XHU2NTlDXHU2NzYwXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3JjUGF0aChzcmNOYW1lID0gJ3NyYycpIHtcclxuICByZXR1cm4gcGF0aC5yZXNvbHZlKGdldFJvb3RQYXRoKCksIHNyY05hbWUpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiAqIFx1OEY2Q1x1NjM2MmVudlx1OTE0RFx1N0Y2RVxyXG4gKiBAcGFyYW0gZW52T3B0aW9uc1xyXG4gKiBAZGVzY3JpdGlvbiBib29sZWFuXHU1NDhDXHU2NTcwXHU1QjU3XHU3QzdCXHU1NzhCXHU4RjZDXHU2MzYyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEVudihlbnZPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVml0ZUVudiB7XHJcbiAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fVxyXG4gIGlmICghZW52T3B0aW9ucylcclxuICAgIHJldHVybiByZXN1bHRcclxuXHJcbiAgZm9yIChjb25zdCBlbnZLZXkgaW4gZW52T3B0aW9ucykge1xyXG4gICAgbGV0IGVudlZhbCA9IGVudk9wdGlvbnNbZW52S2V5XVxyXG4gICAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKGVudlZhbCkpXHJcbiAgICAgIGVudlZhbCA9IGVudlZhbCA9PT0gJ3RydWUnXHJcblxyXG4gICAgaWYgKFsnVklURV9QT1JUJ10uaW5jbHVkZXMoZW52S2V5KSlcclxuICAgICAgZW52VmFsID0gK2VudlZhbFxyXG5cclxuICAgIHJlc3VsdFtlbnZLZXldID0gZW52VmFsXHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHRcclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXFx1OTAzQlx1NjgzQ0FJXFxcXGx1b2dlX3YyXFxcXHN5c21hcnNcXFxccXMtYWRtaW4tdHNcXFxcYnVpbGRcXFxcY29uZmlnXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxcdTkwM0JcdTY4M0NBSVxcXFxsdW9nZV92MlxcXFxzeXNtYXJzXFxcXHFzLWFkbWluLXRzXFxcXGJ1aWxkXFxcXGNvbmZpZ1xcXFxkZWZpbmUudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6LyVFOSU4MCVCQiVFNiVBMCVCQ0FJL2x1b2dlX3YyL3N5c21hcnMvcXMtYWRtaW4tdHMvYnVpbGQvY29uZmlnL2RlZmluZS50c1wiO2ltcG9ydCBkYXlqcyBmcm9tICdkYXlqcydcclxuXHJcbi8qKlxyXG4gKiAqIFx1NkI2NFx1NTkwNFx1NUI5QVx1NEU0OVx1NzY4NFx1NjYyRlx1NTE2OFx1NUM0MFx1NUUzOFx1OTFDRlx1RkYwQ1x1NTQyRlx1NTJBOFx1NjIxNlx1NjI1M1x1NTMwNVx1NTQwRVx1NUMwNlx1NkRGQlx1NTJBMFx1NTIzMHdpbmRvd1x1NEUyRFxyXG4gKiBodHRwczovL3ZpdGVqcy5jbi9jb25maWcvI2RlZmluZVxyXG4gKi9cclxuXHJcbi8vIFx1OTg3OVx1NzZFRVx1Njc4NFx1NUVGQVx1NjVGNlx1OTVGNFxyXG5jb25zdCBfQlVJTERfVElNRV8gPSBKU09OLnN0cmluZ2lmeShkYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpKVxyXG5cclxuZXhwb3J0IGNvbnN0IHZpdGVEZWZpbmUgPSB7XHJcbiAgX0JVSUxEX1RJTUVfLFxyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxzZXR0aW5nc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxzZXR0aW5nc1xcXFxwcm94eS1jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6LyVFOSU4MCVCQiVFNiVBMCVCQ0FJL2x1b2dlX3YyL3N5c21hcnMvcXMtYWRtaW4tdHMvc2V0dGluZ3MvcHJveHktY29uZmlnLnRzXCI7Y29uc3QgcHJveHlDb25maWdNYXBwaW5nczogUmVjb3JkPFByb3h5VHlwZSwgUHJveHlDb25maWc+ID0ge1xyXG4gIGRldjoge1xyXG4gICAgcHJlZml4OiAnL2FwaScsXHJcbiAgICB0YXJnZXQ6ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAnLFxyXG4gIH0sXHJcbiAgdGVzdDoge1xyXG4gICAgcHJlZml4OiAnL2FwaScsXHJcbiAgICB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0OjgwODAnLFxyXG4gIH0sXHJcbiAgcHJvZDoge1xyXG4gICAgcHJlZml4OiAnL2FwaScsXHJcbiAgICB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0OjgwODAnLFxyXG4gIH0sXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm94eUNvbmZpZyhlbnZUeXBlOiBQcm94eVR5cGUgPSAnZGV2Jyk6IFByb3h5Q29uZmlnIHtcclxuICByZXR1cm4gcHJveHlDb25maWdNYXBwaW5nc1tlbnZUeXBlXVxyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxidWlsZFxcXFxjb25maWdcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXFx1OTAzQlx1NjgzQ0FJXFxcXGx1b2dlX3YyXFxcXHN5c21hcnNcXFxccXMtYWRtaW4tdHNcXFxcYnVpbGRcXFxcY29uZmlnXFxcXHByb3h5LnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi8lRTklODAlQkIlRTYlQTAlQkNBSS9sdW9nZV92Mi9zeXNtYXJzL3FzLWFkbWluLXRzL2J1aWxkL2NvbmZpZy9wcm94eS50c1wiO2ltcG9ydCB0eXBlIHsgUHJveHlPcHRpb25zIH0gZnJvbSAndml0ZSdcclxuaW1wb3J0IHsgZ2V0UHJveHlDb25maWcgfSBmcm9tICcuLi8uLi9zZXR0aW5ncy9wcm94eS1jb25maWcnXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVml0ZVByb3h5KGlzVXNlUHJveHkgPSB0cnVlLCBwcm94eVR5cGU6IFByb3h5VHlwZSkge1xyXG4gIGlmICghaXNVc2VQcm94eSlcclxuICAgIHJldHVybiB1bmRlZmluZWRcclxuXHJcbiAgY29uc3QgcHJveHlDb25maWcgPSBnZXRQcm94eUNvbmZpZyhwcm94eVR5cGUpXHJcbiAgY29uc3QgcHJveHk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IFByb3h5T3B0aW9ucz4gPSB7XHJcbiAgICBbcHJveHlDb25maWcucHJlZml4XToge1xyXG4gICAgICB0YXJnZXQ6IHByb3h5Q29uZmlnLnRhcmdldCxcclxuICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICByZXdyaXRlOiAocGF0aDogc3RyaW5nKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7cHJveHlDb25maWcucHJlZml4fWApLCAnJyksXHJcbiAgICB9LFxyXG4gIH1cclxuICByZXR1cm4gcHJveHlcclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXFx1OTAzQlx1NjgzQ0FJXFxcXGx1b2dlX3YyXFxcXHN5c21hcnNcXFxccXMtYWRtaW4tdHNcXFxcYnVpbGRcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxidWlsZFxcXFxwbHVnaW5zXFxcXGluZGV4LnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi8lRTklODAlQkIlRTYlQTAlQkNBSS9sdW9nZV92Mi9zeXNtYXJzL3FzLWFkbWluLXRzL2J1aWxkL3BsdWdpbnMvaW5kZXgudHNcIjtpbXBvcnQgdHlwZSB7IFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnXHJcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xyXG5pbXBvcnQgdW5vY3NzIGZyb20gJ3Vub2Nzcy92aXRlJ1xyXG5pbXBvcnQgeyB2aXN1YWxpemVyIH0gZnJvbSAncm9sbHVwLXBsdWdpbi12aXN1YWxpemVyJ1xyXG5pbXBvcnQgdml0ZUNvbXByZXNzaW9uIGZyb20gJ3ZpdGUtcGx1Z2luLWNvbXByZXNzaW9uJ1xyXG5cclxuaW1wb3J0IHVucGx1Z2lucyBmcm9tICcuL3VucGx1Z2luJ1xyXG5pbXBvcnQgeyBzZXR1cEh0bWxQbHVnaW4gfSBmcm9tICcuL2h0bWwnXHJcbmltcG9ydCB7IHNldHVwTW9ja1BsdWdpbiB9IGZyb20gJy4vbW9jaydcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFZpdGVQbHVnaW5zKHZpdGVFbnY6IFZpdGVFbnYsIGlzQnVpbGQ6IGJvb2xlYW4pOiBQbHVnaW5PcHRpb25bXSB7XHJcbiAgY29uc3QgcGx1Z2lucyA9IFt2dWUoKSwgLi4udW5wbHVnaW5zLCB1bm9jc3MoKSwgc2V0dXBIdG1sUGx1Z2luKHZpdGVFbnYpXVxyXG4gIGlmICh2aXRlRW52LlZJVEVfVVNFX01PQ0spXHJcbiAgICBwbHVnaW5zLnB1c2goc2V0dXBNb2NrUGx1Z2luKGlzQnVpbGQpKVxyXG5cclxuICBpZiAodml0ZUVudi5WSVRFX1VTRV9DT01QUkVTUykge1xyXG4gICAgcGx1Z2lucy5wdXNoKFxyXG4gICAgICB2aXRlQ29tcHJlc3Npb24oeyBhbGdvcml0aG06IHZpdGVFbnYuVklURV9DT01QUkVTU19UWVBFIHx8ICdnemlwJyB9KSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIGlmIChpc0J1aWxkKSB7XHJcbiAgICBwbHVnaW5zLnB1c2goXHJcbiAgICAgIHZpc3VhbGl6ZXIoe1xyXG4gICAgICAgIG9wZW46IHRydWUsXHJcbiAgICAgICAgZ3ppcFNpemU6IHRydWUsXHJcbiAgICAgICAgYnJvdGxpU2l6ZTogdHJ1ZSxcclxuICAgICAgfSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcGx1Z2luc1xyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxidWlsZFxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxcdTkwM0JcdTY4M0NBSVxcXFxsdW9nZV92MlxcXFxzeXNtYXJzXFxcXHFzLWFkbWluLXRzXFxcXGJ1aWxkXFxcXHBsdWdpbnNcXFxcdW5wbHVnaW4udHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6LyVFOSU4MCVCQiVFNiVBMCVCQ0FJL2x1b2dlX3YyL3N5c21hcnMvcXMtYWRtaW4tdHMvYnVpbGQvcGx1Z2lucy91bnBsdWdpbi50c1wiO2ltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXHJcbmltcG9ydCBBdXRvSW1wb3J0IGZyb20gJ3VucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGUnXHJcbmltcG9ydCBDb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnXHJcbmltcG9ydCB7IE5haXZlVWlSZXNvbHZlciB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVycydcclxuaW1wb3J0IHsgRmlsZVN5c3RlbUljb25Mb2FkZXIgfSBmcm9tICd1bnBsdWdpbi1pY29ucy9sb2FkZXJzJ1xyXG5pbXBvcnQgSWNvbnNSZXNvbHZlciBmcm9tICd1bnBsdWdpbi1pY29ucy9yZXNvbHZlcidcclxuXHJcbi8qKlxyXG4gKiAqIHVucGx1Z2luLWljb25zXHU2M0QyXHU0RUY2XHVGRjBDXHU4MUVBXHU1MkE4XHU1RjE1XHU1MTY1aWNvbmlmeVx1NTZGRVx1NjgwN1xyXG4gKiB1c2FnZTogaHR0cHM6Ly9naXRodWIuY29tL2FudGZ1L3VucGx1Z2luLWljb25zXHJcbiAqIFx1NTZGRVx1NjgwN1x1NUU5MzogaHR0cHM6Ly9pY29uZXMuanMub3JnL1xyXG4gKi9cclxuaW1wb3J0IEljb25zIGZyb20gJ3VucGx1Z2luLWljb25zL3ZpdGUnXHJcbmltcG9ydCB7IGNyZWF0ZVN2Z0ljb25zUGx1Z2luIH0gZnJvbSAndml0ZS1wbHVnaW4tc3ZnLWljb25zJ1xyXG5cclxuaW1wb3J0IHsgZ2V0U3JjUGF0aCB9IGZyb20gJy4uL3V0aWxzJ1xyXG5cclxuY29uc3QgY3VzdG9tSWNvblBhdGggPSByZXNvbHZlKGdldFNyY1BhdGgoKSwgJ2Fzc2V0cy9zdmcnKVxyXG5leHBvcnQgZGVmYXVsdCBbXHJcbiAgQXV0b0ltcG9ydCh7XHJcbiAgICBpbXBvcnRzOiBbJ3Z1ZScsICd2dWUtcm91dGVyJ10sXHJcbiAgICBkdHM6ICd0eXBlcy9hdXRvLWltcG9ydHMuZC50cycsXHJcbiAgfSksXHJcbiAgSWNvbnMoe1xyXG4gICAgY29tcGlsZXI6ICd2dWUzJyxcclxuICAgIGN1c3RvbUNvbGxlY3Rpb25zOiB7XHJcbiAgICAgIGN1c3RvbTogRmlsZVN5c3RlbUljb25Mb2FkZXIoY3VzdG9tSWNvblBhdGgpLFxyXG4gICAgfSxcclxuICAgIHNjYWxlOiAxLFxyXG4gICAgZGVmYXVsdENsYXNzOiAnaW5saW5lLWJsb2NrJyxcclxuICB9KSxcclxuICBDb21wb25lbnRzKHtcclxuICAgIHJlc29sdmVyczogW05haXZlVWlSZXNvbHZlcigpLCBJY29uc1Jlc29sdmVyKHsgY3VzdG9tQ29sbGVjdGlvbnM6IFsnY3VzdG9tJ10sIGNvbXBvbmVudFByZWZpeDogJ2ljb24nIH0pXSxcclxuICAgIGR0czogJ3R5cGVzL2NvbXBvbmVudHMuZC50cycsXHJcbiAgfSksXHJcbiAgY3JlYXRlU3ZnSWNvbnNQbHVnaW4oe1xyXG4gICAgaWNvbkRpcnM6IFtjdXN0b21JY29uUGF0aF0sXHJcbiAgICBzeW1ib2xJZDogJ2ljb24tY3VzdG9tLVtkaXJdLVtuYW1lXScsXHJcbiAgICBpbmplY3Q6ICdib2R5LWxhc3QnLFxyXG4gICAgY3VzdG9tRG9tSWQ6ICdfX0NVU1RPTV9TVkdfSUNPTl9fJyxcclxuICB9KSxcclxuXVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXFx1OTAzQlx1NjgzQ0FJXFxcXGx1b2dlX3YyXFxcXHN5c21hcnNcXFxccXMtYWRtaW4tdHNcXFxcYnVpbGRcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcXHU5MDNCXHU2ODNDQUlcXFxcbHVvZ2VfdjJcXFxcc3lzbWFyc1xcXFxxcy1hZG1pbi10c1xcXFxidWlsZFxcXFxwbHVnaW5zXFxcXGh0bWwudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6LyVFOSU4MCVCQiVFNiVBMCVCQ0FJL2x1b2dlX3YyL3N5c21hcnMvcXMtYWRtaW4tdHMvYnVpbGQvcGx1Z2lucy9odG1sLnRzXCI7aW1wb3J0IHsgY3JlYXRlSHRtbFBsdWdpbiB9IGZyb20gJ3ZpdGUtcGx1Z2luLWh0bWwnXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBIdG1sUGx1Z2luKHZpdGVFbnY6IFZpdGVFbnYpIHtcclxuICBjb25zdCB7IFZJVEVfQVBQX1RJVExFIH0gPSB2aXRlRW52XHJcblxyXG4gIGNvbnN0IGh0bWxQbHVnaW4gPSBjcmVhdGVIdG1sUGx1Z2luKHtcclxuICAgIG1pbmlmeTogdHJ1ZSxcclxuICAgIGluamVjdDoge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IFZJVEVfQVBQX1RJVExFLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9KVxyXG4gIHJldHVybiBodG1sUGx1Z2luXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxcdTkwM0JcdTY4M0NBSVxcXFxsdW9nZV92MlxcXFxzeXNtYXJzXFxcXHFzLWFkbWluLXRzXFxcXGJ1aWxkXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXFx1OTAzQlx1NjgzQ0FJXFxcXGx1b2dlX3YyXFxcXHN5c21hcnNcXFxccXMtYWRtaW4tdHNcXFxcYnVpbGRcXFxccGx1Z2luc1xcXFxtb2NrLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi8lRTklODAlQkIlRTYlQTAlQkNBSS9sdW9nZV92Mi9zeXNtYXJzL3FzLWFkbWluLXRzL2J1aWxkL3BsdWdpbnMvbW9jay50c1wiO2ltcG9ydCB7IHZpdGVNb2NrU2VydmUgfSBmcm9tICd2aXRlLXBsdWdpbi1tb2NrJ1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwTW9ja1BsdWdpbihpc0J1aWxkOiBib29sZWFuKSB7XHJcbiAgcmV0dXJuIHZpdGVNb2NrU2VydmUoe1xyXG4gICAgbW9ja1BhdGg6ICdtb2NrL2FwaScsXHJcbiAgICBsb2NhbEVuYWJsZWQ6ICFpc0J1aWxkLFxyXG4gICAgcHJvZEVuYWJsZWQ6IGlzQnVpbGQsXHJcbiAgICBpbmplY3RDb2RlOiBgXHJcbiAgICAgIGltcG9ydCB7IHNldHVwUHJvZE1vY2tTZXJ2ZXIgfSBmcm9tICcuLi9tb2NrJztcclxuICAgICAgc2V0dXBQcm9kTW9ja1NlcnZlcigpO1xy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
